﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using ServicioRFIDMovil.Entidad;
using ServicioRFIDMovil.DataAccess;
using ServicioRFIDMovil.Herramientas;
using System.Data;

namespace ServicioRFIDMovil.Datos
{
    public class AlmacenDA
    {
        #region --- Variables y Constantes ---
        private static readonly ILog log = LogManager.GetLogger(typeof(AlmacenDA));

        // Parametros Entrada
        private const string PARAM_CURSOR = "P_LISTAALMACENES";

        // Parametros Salida
        private const string IIDALMACEN = "IIDALMACEN";
        private const string VNOMBRE = "VNOMBRE";
        private const string BHABILITADO = "BHABILITADO";
        #endregion

        #region --- Metodos Propios ---
        public ListaAlmacen listarAlmacen()
        {
            ListaAlmacen listaAlmacen = null;
            DataSet dsAlmacen = new DataSet();

            if (log.IsDebugEnabled)
            {
                log.Debug("listarAlmacen()");
            }

            using (Database db = new Database(ConstantesDAO.NombreInterface.ConexTvperu))
            {
                db.NombreProcedimiento = Constantes.PROCEDIMIENTO_RFID_OBTENERALMACENES;
                db.agregarParametro(PARAM_CURSOR, DbType.Binary, ParameterDirection.Output, null);

                IDataAdapter dataAdapter = db.obtenerDataAdapter();
                dataAdapter.Fill(dsAlmacen);

                listaAlmacen = new ListaAlmacen();

                foreach (DataRow fila in dsAlmacen.Tables[0].Rows)
                {
                    listaAlmacen.Add(generarEntidad(fila));
                }
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("Retornando " + listaAlmacen.Count + " registros");
            }

            return listaAlmacen;
        }

        private Almacen generarEntidad(DataRow fila)
        {
            Almacen almacen = new Almacen();
            almacen.codigo = Convert.ToInt32(fila[IIDALMACEN]);
            almacen.descripcion = fila[VNOMBRE].ToString();
            almacen.habilitado = Convert.ToInt32(fila[BHABILITADO]);
            return almacen;
        }
        #endregion

    }
}
